/**
 * ReportGear(2011)
 */
package com.reportgear.core.data;

import java.util.List;
import java.util.Set;

import com.reportgear.core.data.model.SalaryDataObject;
import com.reportgear.report.model.cell.value.salary.SalaryObjectType;

/**
 * 薪酬数据查询代理
 * 
 * @version 1.0 2011-5-28
 * @author <a herf="lexloo@gmail.com">lexloo</a>
 * @since Report 1.0
 */
public interface SalaryDataQueryDelegate {
	/**
	 * 组织机构
	 */
	public List<SalaryDataObject> getOrgs();

	/**
	 * 成本中心
	 */
	public List<SalaryDataObject> getCenters();

	/**
	 * 薪酬体系
	 */
	public List<SalaryDataObject> getSalaryScheme();

	/**
	 * 薪酬项目
	 * 
	 * @param schemeId
	 *            薪酬体系Id
	 */
	public List<SalaryDataObject> getSalaryItem(int schemeId);

	/**
	 * 发放表公司汇总数据
	 * 
	 * @param paymentId
	 *            发放表Id
	 * @param level
	 *            层级
	 * @param rowSet
	 *            行对象
	 * @param colSet
	 *            列对象
	 */
	public List<SalaryDataObject> getPayTotal(int payId, SalaryObjectType objectType, int level, Set<Integer> rowSet,
			Set<Integer> colSet);

	/**
	 * 发放表员工档案明细数据
	 */
	public List<SalaryDataObject> getPayDoc(int paymentId, SalaryObjectType objectType, int level, Set<Integer> rowSet,
			Set<Integer> colSet);

	/**
	 * 发放表员工薪酬明细数据
	 */
	public List<SalaryDataObject> getPayDetail(int paymentId, SalaryObjectType objectType, int level,
			Set<Integer> rowSet, Set<Integer> colSet);

	/**
	 * 读取指定模板
	 * 
	 * @param reportId
	 *            模板Id
	 * @return 模板内容
	 */
	public String loadTemplate(int reportId);

	/**
	 * 模板列表读取服务
	 * 
	 * @return 模板列表
	 */
	public List<SalaryDataObject> loadTemplateList();

	/**
	 * 模板存储
	 * 
	 * @param template
	 *            模型内容
	 * @param id
	 *            模板Id
	 * @param SystemId
	 *            薪酬体系Id
	 * @param name
	 *            模板名称
	 * @return 模板返回Id结果
	 */
	public int saveTemplate(String template, int id, int SystemId, String name);

	/**
	 * 删除指定模板
	 * 
	 * @param id
	 *            模板Id
	 * @return 删除结果
	 */
	public boolean deleteTemplate(int id);

	/**
	 * 发放表中的对象信息(组织机构或成本中心)
	 */
	public List<SalaryDataObject> getPayObjects(int payId, SalaryObjectType objectType, int level,
			Set<Integer> rowSet, Set<Integer> colSet);

	/**
	 * 发放表基本信息，发放表描述
	 * 
	 * @param payId
	 *            发放表Id
	 * @return 发放表信息
	 */
	public SalaryDataObject getPayBase(int payId);

	/**
	 * 获取排序信息
	 * 
	 * @param key
	 *            键值
	 * @return 排序信息列表
	 */
	public List<SalaryDataObject> getOrderInfo(String key);

	/**
	 * 保存排序信息
	 * 
	 * @param key
	 *            键值
	 * @param content
	 *            信息列表
	 */
	public int saveOrderInfo(String key, String content);

	/**
	 * @return 最近发放表信息
	 */
	public List<SalaryDataObject> getLastPayments();

	/**
	 * @return Session变量
	 */
	public SalaryDataObject getSessionVar();

}
